<?php

/**
 * revisar_os actions.
 *
 * @package    SAC_CLonsa
 * @subpackage revisar_os
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class revisar_osActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->forward('default', 'module');
  }
  
  public function executeEntrantes()
  {
      if($this->getUser()->getGuardUser()->getIsSuperAdmin())
      {
          $ordenes_pendientes = OsSolicitantePeer::getOsPorEstadoOsId(1);
      }
      else
      {
          /* Trae todas las solicitudes que sean del área correspondiente a el usuario actual en la sesión que estén pendientes*/
          $ordenes_pendientes = OsSolicitantePeer::getOsPorEstadoVsAreaId( 1, $this->getUser()->getGuardUser()->getProfile()->getAreaId() );
      }

      $this->ordenes_pendientes = $ordenes_pendientes;

      $cont = 0;
      foreach ($ordenes_pendientes as $orden)
      {
          $nombreCompleto = sfGuardUserProfilePeer::getUnNomApePorUserId( $orden->getSfGuardUserId() );
          $htOrdenSolicitante[$orden->getId()]= $nombreCompleto;
          $cont++;
      }

      /* Para asegurarce de que se entró al ciclo anterior en el que se llena el vector $htOrdenSolicitante */
      if( $cont > 0 ){
          $this->htOrdenSolicitante = $htOrdenSolicitante;
      }
      
  }

  public function executeRevisar(sfWebRequest $peticion)
  {
     $this->EstadoOs = '';
     $this->cont = 0;//este contador se usa en la vista, aprobarSuccess.php, para diferenciar los id de cada elemento de la tabla
     $this->bandera = 1;

     if( !is_null( $peticion->getParameter('id') ) && !is_null( OsSolicitantePeer::getOsPorId( $peticion->getParameter('id')) ) )
     {
         $OrdenServicio = OsSolicitantePeer::getOsPorId( $peticion->getParameter('id') );
         if ($OrdenServicio->getEstadoOsId() != '1')
         {
             $peticion->setParameter('opc', '4' );
             $peticion->setParameter('idOS', $OrdenServicio->getId() );
             $this->forward('revisar_os', 'termino');
         }
         $this->OrdenServicio = $OrdenServicio;
         $this->Items = ItemOsPeer::getItemsPorOsId( $peticion->getParameter('id') );

         if( $peticion->isMethod('post') )
         {
             $num_items = $peticion->getParameter( 'num_item_tabla_aprobar' );
             $eleccion = $peticion->getParameter( 'revisar_eleccion_accion' );

             if( $eleccion == "revisada" )
             {
                 /*Marcar Orden de Servicio y solicitudes de la Orden de Servicio como Revisada(s)*/
                 $OrdenServicio->setEstadoOsId(2);
                 $OrdenServicio->save();
                 $cont2 = 0;
                 while ( $cont2 < ($num_items) )
                 {
                    ItemOsPeer::CambiarEstadoSolicitud($peticion->getParameter( 'id_item' . $cont2 ), 2);
                    $peticion->setParameter('id_item'.$cont2, $peticion->getParameter( 'id_item' . $cont2 ) );
                    $cont2++;
                 }
                 $peticion->setParameter('opc', '1' );
                 $peticion->setParameter('idOS', $OrdenServicio->getId() );
                 $this->forward('revisar_os', 'termino');
             }
             elseif( $eleccion == "rechazada" )
             {
                 /*Marcar Orden de Servicio y solicitudes de la Orden de Servicio como Rechazada(s)*/
                 $OrdenServicio->setEstadoOsId(3);
                 $OrdenServicio->save();
                 $cont2 = 1;
                 while ( $cont2 < ($num_items) )
                 {
                    ItemOsPeer::CambiarEstadoSolicitud($peticion->getParameter( 'id_item' . $cont2 ), 3);
                    $cont2++;
                 }
                 $peticion->setParameter('opc', '2' );
                 $peticion->setParameter('idOS', $OrdenServicio->getId() );
                 $this->forward('revisar_os', 'termino');
             }
             else
             {
                 /*Error no se a realizado acción alguno*/
                 $peticion->setParameter('opc', '3' );
                 $peticion->setParameter('idOS', $OrdenServicio->getId() );
                 $this->forward('revisar_os', 'termino');
             }
         }
     }
     elseif ( !is_null( $peticion->getParameter('id') ) )
     {
         $peticion->setParameter('opc', '5' );
         $peticion->setParameter('idOS', $peticion->getParameter('id') );
         $this->forward('revisar_os', 'termino');
     }
     else
     {
         $this->bandera = 2;
     }
  }

  public function executeTermino(sfWebRequest $peticion)
  {
      $this->idOS = $peticion->getParameter('idOS');
      $this->accion = $peticion->getParameter('opc');
      $this->eleccion = $eleccion = $peticion->getParameter( 'revisar_eleccion_accion' );
      $num_items = $peticion->getParameter( 'num_item_tabla_aprobar' );
      $this->num_items = $num_items;
  }

}
